home *** CD-ROM | disk | FTP | other *** search
-
-
- *****Listing 4*****
-
-
- unsigned short compute_checksum(start,length)
- unsigned char * start;
- unsigned short length;
- {
- unsigned short sum = 0;
- unsigned char * end = start + length;
-
- while(start < end)
- {
- sum += *start++;
- }
- return sum;
- }
-
- short check_checksum(where,start,length,oldsum)
- char * where;
- unsigned char * start;
- unsigned short length;
- unsigned short oldsum;
- {
- unsigned short sum;
- sum = compute_checksum(start,length);
- if(sum == oldsum)
- return 0;
-
- fprintf(stderr,
- "Checksum error at %s:"
- " %p/%ud(0x%4x),"
- " old %ux, new %ux\n",
- where, start, length,
- oldsum, sum);
- return stop();
- }
-
- **********
-
-